package simple;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 给你一个字符串 s ，仅反转字符串中的所有元音字母，并返回结果字符串。
 *
 * 元音字母包括 'a'、'e'、'i'、'o'、'u'，且可能以大小写两种形式出现。
 *
 *
 * @author yuxuan.hu
 * */
public class ReverseVowelsOfAString {
    /**
     * 定义对撞指针
     * */
    static class Solution {
        public String reverseVowels(String s) {
            char[] charArr = s.toCharArray();
            int left = 0;
            int right = s.length()-1;
            while(left < right){
                while(left < right && !isVowel(charArr[left])){ left++;}
                while(left < right && !isVowel(charArr[right])){ right--;}
                swap(charArr, left++, right--);
            }
            return new String(charArr);
        }

        private static boolean isVowel(char c){
            List<Character> vowels = Arrays.asList('a','e','i','o','u');
            return vowels.contains(c) || vowels.contains(Character.toLowerCase(c));
        }

        private static void swap(char[] charArr, int left, int right){
            char temp = charArr[left];
            charArr[left] = charArr[right];
            charArr[right] = temp;

        }
    }
}
